package com.ptl.bp.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * 便携式电池导入DTO
 */
@NoArgsConstructor
@Data
public class PortableBatteryImportDTO {

    // ==================== 基本信息 ====================
    @ExcelProperty(value = "制造地点", index = 0)
    @NotNull(message = "制造地点不能为空")
    private String manufacturingLocation;

    @ExcelProperty(value = "制造日期", index = 1)
    @DateTimeFormat("yyyy-MM")
    @NotNull(message = "制造日期不能为空")
    private String manufacturingDate;

    @ExcelProperty(value = "电池类别", index = 2)
    @NotNull(message = "电池类别不能为空")
    private String batteryCategory;

    @ExcelProperty(value = "电池质量", index = 3)
    @NotNull(message = "电池质量不能为空")
    private BigDecimal batteryMass;

    @ExcelProperty(value = "额定容量", index = 4)
    @NotNull(message = "额定容量不能为空")
    private BigDecimal ratedCapacity;

    // ==================== 标识符和产品数据 ====================
    @ExcelProperty(value = "电池护照标识符", index = 5)
    @NotNull(message = "电池护照标识符不能为空")
    private String batteryPassportId;

    @ExcelProperty(value = "电池标识符", index = 6)
    @NotNull(message = "电池标识符不能为空")
    private String batteryId;

    @ExcelProperty(value = "制造商标识符", index = 7)
    @NotNull(message = "制造商标识符和信息不能为空")
    private String manufacturerId;

    // ==================== 符号、标签、符合性声明文档 ====================
    @ExcelProperty(value = "分类回收符号图形", index = 8)
    private String recyclingSymbolGraphic;

    @ExcelProperty(value = "镉和铅符号图形", index = 9)
    private String cadmiumLeadSymbolGraphic;

    @ExcelProperty(value = "灭火剂类型", index = 10)
    private String fireExtinguishingAgent;

    @ExcelProperty(value = "不可充电符号图形", index = 11)
    private String nonRechargeableGraphic;

    @ExcelProperty(value = "标签和符号的含义", index = 12)
    private String labelSymbolMeaning;

    @ExcelProperty(value = "欧盟符合性声明文档", index = 13)
    private String euDeclarationOfConformity;

    @ExcelProperty(value = "尽职调查报告文档", index = 14)
    private String dueDiligenceReport;

    // ==================== 电池材料和组成 ====================
    @ExcelProperty(value = "电池化学体系", index = 15)
    @NotNull(message = "电池化学体系不能为空")
    private String batteryChemistry;

    @ExcelProperty(value = "关键原材料", index = 16)
    private String criticalRawMaterial;

    @ExcelProperty(value = "有害物质", index = 17)
    private String hazardousSubstance;

    @ExcelProperty(value = "物质影响描述", index = 18)
    private String substanceImpactDescription;

    // ==================== 废旧电池预防与管理信息 ====================
    @ExcelProperty(value = "废物预防信息", index = 19)
    private String wastePreventionInfo;

    @ExcelProperty(value = "废物分类收集信息", index = 20)
    private String wasteSortingCollectionInfo;

    @ExcelProperty(value = "电池生命周期结束信息", index = 21)
    private String batteryEndOfLifeInfo;

    @ExcelProperty(value = "安全措施信息", index = 22)
    private String safetyMeasuresInfo;
}